package com.sky.utils;

import com.sky.constants.Constants;
import com.sky.domain.SimpleUser;
import com.sky.domain.User;
import com.sky.vo.ActiveUser;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;

import java.util.List;

/**
 * 工具类
 * @author sky
 * @create 2020-11-02 18:55
 */
public class ShiroSecurityUtils {
    /**
     * 得到当前登陆的用户对象的ActiveUser
     */
    public static ActiveUser getCurrentActiveUser() {
        Subject subject = SecurityUtils.getSubject();
        ActiveUser activeUser = (ActiveUser) subject.getPrincipal();
        return activeUser;
    }

    /**
     * 得到当前登陆的用户对象User
     */
    public static User getCurrentUser() {
        return getCurrentActiveUser().getUser();
    }

    /**
     * 得到当前登陆的用户对象SimpleUser
     */
    public static SimpleUser getCurrentSimpleUser() {
        User user = getCurrentUser();
        return new SimpleUser(user.getUserId(), user.getUserName());
    }

    /**
     * 得到当前登陆对象的角色编码
     */
    public static List<String> getCurrentUserRoles() {
        return getCurrentActiveUser().getRoles();
    }

    /**
     * 得到当前登陆对象的权限编码
     */
    public static List<String> getCurrentUserPermissions() {
        return getCurrentActiveUser().getPermissions();
    }

    /**
     * 判断当前用户是否时超级管理员
     */
    public static boolean isAdmin() {
        return getCurrentUser().getUserType().equals(Constants.USER_ADMIN);
    }

    /**
     * 获取当前用户的姓名
     */
    public static String getCurrentUserName() {
        return getCurrentUser().getUserName();
    }
}
